package coin.enetity;

import java.util.*;

/**
 * @author coinyang
 * @date 2023/11/13 18:59
 */
public class TestService {
   /*
    目: 输入一个标签列表，长度大于18，进行以下操作:
* 1、按标答情感值倒席排列，优先展示正向标签，其次展示中性标签，最后展示负向标签，同一博感等级的标签按关联数量进行倒序排列。
*2如黑前六个标签河均为正向标签，则将序最前的负向标益提权到前六位展示，此时前六位技照关联数量排序，不再坡情感值排序，原本第6位及之后的河顺延至下一位展示，
*3、返回排序后标等id (tagld) 为1001和1002对应的次序加和(假输入的标签列表一定包含这两个标等id)，
业

    */

   public int tagOrder(List<TagDTO> tagList) {
      // 按照情感值进行排序，优先展示正向标签，其次展示中性标签，最后展示负向标签
      Collections.sort(tagList, (a, b) -> {
         if (a.getAffection() == b.getAffection()) {
            return b.getRelatedAmount() - a.getRelatedAmount();
         } else {
            return a.getAffection() - b.getAffection();
         }
      });

      // 如果前六个标签都是正向标签，将最前的负向标签提到前六位展示
      if (tagList.size() >= 6 && tagList.get(0).getAffection() == 1) {
         TagDTO negativeTag = tagList.remove(0);
         tagList.add(0, negativeTag);
      }

      // 返回排序后标签id为1001和1002对应的次序加和
      int orderSum = 0;
      for (int i = 0; i < tagList.size(); i++) {
         if (tagList.get(i).getTagId() == 1001 || tagList.get(i).getTagId() == 1002) {
            orderSum += i + 1;
         }
      }
      return orderSum;
   }
}
class TagDTO {
   private Integer tagId;
   private String tagName;
   // 情遵值，1=正向，8=中姓，-1=负向
   private Integer affection;
   // 关数量
   private Integer relatedAmount;

   public Integer getTagId() {
      return tagId;
   }

   public void setTagId(Integer tagId) {
      this.tagId = tagId;
   }

   public String getTagName() {
      return tagName;
   }

   public void setTagName(String tagName) {
      this.tagName = tagName;
   }

   public Integer getAffection() {
      return affection;
   }

   public void setAffection(Integer affection) {
      this.affection = affection;
   }

   public Integer getRelatedAmount() {
      return relatedAmount;
   }

   public void setRelatedAmount(Integer relatedAmount) {
      this.relatedAmount = relatedAmount;
   }
}
